package net.sf.calibur.ai.bt;

import java.util.Collection;
import java.util.Iterator;

/**
 * Abstract behavior tree node.
 * @author gaobo
 *
 */
public interface BTNode {
	enum NodeType {
		composite,
		decorator,
		condition,
		action
	}
	
	enum CompositeNoteType {
		selector,
		sequence,
		parallel
	}
	
	public void addChild(BTNode child);
	public void setParent(BTNode parent);
	public BTNode getParent();
	
	public int getChildrenNum();
	public boolean perform();
	public Iterator<BTNode> getIterator(long tick);
	
//	public BTNode getParent(); // Get parent node
//	public NodeType getType(); // Get node type
//	public CompositeNoteType getCompositeType(); // Get composite node type
	
}
